﻿using WPay.Domain.Model.DTOs;
using WPay.Domain.MainModule.Interface.DomainServices;
using WPay.Infrastructure.Unity;

namespace WPay.Domain.MainModule
{
    public class Token_DomainService : IToken_DomainService
    {
        public bool CheckToken(string _token,out string _appID)
        {
            _appID = "";
            if (string.IsNullOrWhiteSpace(_token))
                return false;

            #region 从Redis获取Token，存在即合法
            //暂不启用通过Redis校验

            #endregion
            //读取token信息
            _appID = IdentityServer.ReadToken(_token);
            return !string.IsNullOrEmpty(_appID);
        }

        public bool GetToken(ref TokenDTO tokenDto)
        {
            if (tokenDto == null || string.IsNullOrWhiteSpace(tokenDto.AppId) || string.IsNullOrWhiteSpace(tokenDto.AppSecret) || tokenDto.AppSecret.Length < 32)
                return false;

            #region 通过tokenDto.AppID和tokenDto.AppSecret从Redis数据库进行校验appID是否合法，不合法则直接返回
            if (tokenDto.AppId != "m1234567" && tokenDto.AppSecret != "7947ff3cbf06647f312e4e6ec5e32943")
                return false;
            tokenDto.AppType = "WECHAT_UI";
            #endregion
            //生成token
            string encodedJwt = IdentityServer.CreateToken(tokenDto.AppId, tokenDto.AppSecret, tokenDto.AppType, tokenDto.Expires);
            tokenDto.Token = encodedJwt;
            #region 将token存入Redis，过期时间为dt.AddHours(tokenDto.Expires + 180)，缓存时间延长3分钟
            //暂不启用存入Redis


            #endregion
            return true;
        }
    }
}
